package com.lipuwater.agent.http.api;

import android.content.Context;

import com.google.gson.Gson;
import com.lipuwater.agent.app.config.AppConfig;
import com.lipuwater.agent.http.ApiCallBack;
import com.lipuwater.agent.http.BaseRequest;
import com.lipuwater.agent.http.HttpConfig;
import com.lipuwater.agent.http.ResponseParams;
import com.lipuwater.agent.ui.dialog.LoadingDialog;
import com.okhttplib.OkHttpUtils;
import com.okhttplib.callback.FileCallBack;
import com.okhttplib.callback.StringCallback;

import java.io.File;

import okhttp3.Call;

/**
 * 　　　┏┓　　　┏┓
 * 　　┏┛┻━━━┛┻┓
 * 　　┃　　　　　　　┃
 * 　　┃　　　━　　　┃
 * 　　┃　┳┛　┗┳　┃
 * 　　┃　　　　　　　┃
 * 　　┃　　　┻　　　┃
 * 　　┃　　　　　　　┃
 * 　　┗━┓　　　┏━┛
 * 　　　　┃　　　┃神兽保佑
 * 　　　　┃　　　┃永无BUG！
 * 　　　　┃　　　┗━━━┓
 * 　　　　┃　　　　　　　┣┓
 * 　　　　┃　　　　　　　┏┛
 * 　　　　┗┓┓┏━┳┓┏┛
 * 　　　　　┃┫┫　┃┫┫
 * 　　　　　┗┻┛　┗┻┛
 * ━━━━━━神兽出没━━━━━━
 * Created by  Administrator  on 2016/12/5.
 * Email:924686754@qq.com
 * 基础接口:登录、注册...
 */
public class ApiRequestsFile {
    private static BaseRequest baseRequest = BaseRequest.getInstance();

    public static void PostFile(Object object, String path, final LoadingDialog pd, final ApiCallBack callBack) {
        if (pd != null) {
            pd.showDialog();
        }
        OkHttpUtils.post()
                .addFile("Filedata", "fileName.png", new File(path))
                .url(AppConfig.API + "f/api/upload"/* + "upload?Type=avatar&IsWater=0&IsThumbnail=1&func=member"*/)
                .tag(object)
                .build()
                .execute(new StringCallback() {
                    @Override
                    public void onError(Call call, Exception e, int id) {
                        if (pd != null && pd.isShowing()) {
                            pd.dismiss();
                        }
                        if (callBack != null) {
                            callBack.onError(call, e);
                        }
                    }

                    @Override
                    public void onResponse(String response, int id) {
                        if (pd != null && pd.isShowing()) {
                            pd.dismiss();
                        }
                        if (callBack != null) {
                            try {
                                callBack.onResponse(new Gson().fromJson(response, ResponseParams.class));
                            } catch (Exception e) {
                                callBack.onError(null, e);
                            }
                        }
                    }
                });
    }


    /**
     * 下载文件
     *
     * @param context
     * @param url
     */
    public static void downloadFile(Context context, String url, String filePath, String fileName, final ApiCallBack callBack) {
        OkHttpUtils.get()
                .url(url)
                .tag(context)
                .build()
                .execute(new FileCallBack(filePath, fileName) {
                    @Override
                    public void onError(Call call, Exception e, int id) {
                        if (callBack != null) {
                            callBack.onError(call, e);
                        }
                    }

                    @Override
                    public void onResponse(File response, int id) {
                        if (callBack != null) {
                            try {
                                ResponseParams responseParams = new ResponseParams();
                                responseParams.setMessage("下载成功");
                                responseParams.setStatus(HttpConfig.success);
                                callBack.onResponse(responseParams);
                            } catch (Exception e) {
                                callBack.onError(null, e);
                            }
                        }
                    }
                });
    }


    /**
     * 取消对象的所有请求
     *
     * @param object
     */
    public static void cancelRequests(Object object) {
        OkHttpUtils.getInstance().cancelTag(object);
    }

}
